package one;
//工厂模式

//定义产品接口
interface Shape {
 void draw();
}

//具体产品类 Circle
class Circle implements Shape {
 @Override
 public void draw() {
     System.out.println("Drawing Circle");
 }
}

//具体产品类 Rectangle
class Rectangle implements Shape {
 @Override
 public void draw() {
     System.out.println("Drawing Rectangle");
 }
}

//具体产品类 Square
class Square implements Shape {
 @Override
 public void draw() {
     System.out.println("Drawing Square");
 }
}

//工厂类
class ShapeFactory {
 // 使用 getShape 方法获取形状类型的对象
 public Shape getShape(String shapeType) {
     if (shapeType == null) {
         return null;
     }
     if (shapeType.equalsIgnoreCase("CIRCLE")) {
         return new Circle();
     } else if (shapeType.equalsIgnoreCase("RECTANGLE")) {
         return new Rectangle();
     } else if (shapeType.equalsIgnoreCase("SQUARE")) {
         return new Square();
     }
     return null;
 }
}

//测试工厂模式
public class FactoryPatternDemo {
 public static void main(String[] args) {
     ShapeFactory shapeFactory = new ShapeFactory();

     // 获取 Circle 对象，并调用它的 draw 方法
     Shape shape1 = shapeFactory.getShape("CIRCLE");
     shape1.draw();

     // 获取 Rectangle 对象，并调用它的 draw 方法
     Shape shape2 = shapeFactory.getShape("RECTANGLE");
     shape2.draw();

     // 获取 Square 对象，并调用它的 draw 方法
     Shape shape3 = shapeFactory.getShape("SQUARE");
     shape3.draw();
 }
}



